func (m *default{{.upperStartCamelObject}}Inter) Create(ctx context.Context, session sqlx.Session, data *{{.upperStartCamelObject}}) (int64,error) {
	var result sql.Result
    var err error
    {{if .withCache}}{{.keys}}
    result, err = m.ExecCtx(ctx, func(ctx context.Context, conn sqlx.SqlConn) (result sql.Result, err error) {
        query := fmt.Sprintf("insert into %s (%s) values ({{.expression}})", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet)
        if session != nil{
            return session.ExecCtx(ctx,query,{{.expressionValues}})
        }
        return conn.ExecCtx(ctx, query, {{.expressionValues}})
    }, {{.keyValues}}){{else}}
    query := fmt.Sprintf("insert into %s (%s) values ({{.expression}})", m.table, {{.lowerStartCamelObject}}RowsExpectAutoSet)
    if session != nil{
         result,err = session.ExecCtx(ctx, query, {{.expressionValues}})
    }else{
        result, err =  m.conn.ExecCtx(ctx, query, {{.expressionValues}})
    }
    {{end}}

    if err != nil {
        return 0,err
    }
    affected, err := result.RowsAffected();
    if err != nil {
        return affected,err
    }
    if affected == 0 {
        return affected,NotModified
    }
    return affected,nil
}
func (m *custom{{.upperStartCamelObject}}Inter) BulkCreate(ctx context.Context, session sqlx.Session, objs []*{{.upperStartCamelObject}}) error {
    builder := sqlbuilder.NewInsertBuilder()
    builder.Cols(userRowsExpectAutoSet)
    for _, data := range objs {
        builder.Values({{.expressionValues}})
    }
	query, args := m.createBuilder(*builder).Build()
	_, err:= m.exec(ctx, session, query, args)
	return err
}